#!/usr/bin/env python3
"""
使用 melo 生成语音的简洁脚本
"""

import sys
import os

if len(sys.argv) < 2:
    print("使用方法: python melo_tts.py \"要转换的文本\" [输出文件名.wav]")
    sys.exit(1)

text = sys.argv[1]
output_file = sys.argv[2] if len(sys.argv) > 2 else "output.wav"

# 确保输出文件有 .wav 扩展名
if not output_file.lower().endswith('.wav'):
    output_file += '.wav'

try:
    import melo
    print(f"melo 版本: {getattr(melo, '__version__', '未知')}")
    print(f"melo 路径: {os.path.dirname(melo.__file__)}")
    print(f"melo 内容: {dir(melo)}")
except ImportError:
    print("错误: 未找到 melo 库")
    sys.exit(1)

try:
    # 尝试方式1
    print("尝试方式1: 使用 melo.TextToSpeech")
    if hasattr(melo, 'TextToSpeech'):
        tts = melo.TextToSpeech()
        tts.synthesize(text, output_file)
        print(f"成功! 语音已保存到: {output_file}")
        sys.exit(0)
except Exception as e:
    print(f"方式1失败: {e}")

try:
    # 尝试方式2
    print("尝试方式2: 使用 melo.TTS")
    if hasattr(melo, 'TTS'):
        tts = melo.TTS()
        tts.tts_to_file(text=text, file_path=output_file)
        print(f"成功! 语音已保存到: {output_file}")
        sys.exit(0)
except Exception as e:
    print(f"方式2失败: {e}")

try:
    # 尝试方式3
    print("尝试方式3: 从 melo.api 导入 TTS")
    if hasattr(melo, 'api'):
        from melo.api import TTS
        tts = TTS(language='ZH')
        tts.tts_to_file(text=text, file_path=output_file)
        print(f"成功! 语音已保存到: {output_file}")
        sys.exit(0)
except Exception as e:
    print(f"方式3失败: {e}")

# 如果前面的方法都失败了，尝试不使用 melo 的 import
print("尝试方式4: 不使用 melo import")
try:
    # 使用 Python 直接执行
    cmd = f"""
import sys
try:
    from melo import TTS
    tts = TTS(language='ZH')
    tts.tts_to_file(text="{text}", file_path="{output_file}")
    print(f"成功! 语音已保存到: {output_file}")
except ImportError:
    try:
        from melo.api import TTS
        tts = TTS(language='ZH')
        tts.tts_to_file(text="{text}", file_path="{output_file}")
        print(f"成功! 语音已保存到: {output_file}")
    except Exception as e:
        print(f"错误: {{e}}")
        sys.exit(1)
"""
    exec(cmd)
except Exception as e:
    print(f"方式4失败: {e}")
    print("所有尝试都失败了。请检查 melo 的安装或使用 pip show melo 查看详细信息。")
    sys.exit(1) 